package jp.seraph.same.model;

import jp.seraph.jsade.model.Align;
import jp.seraph.jsade.model.JointIdentifier;

/**
 * ジョイントに関する情報を格納するモデル
 * 
 * 
 */
public interface JointModel {
    public String getJointName();

    public JointIdentifier getJointIdentifier();

    /**
     * ジョイントが右・中・左 どこに位置するかを示す値を返す。
     * 
     * @return
     */
    public Align getJointAlign();

    /**
     * ジョイントの縦位置を表す値を取得する。 この値が小さいほど高い位置にあると認識される。
     * 
     * @return
     */
    public int getJointOrder();

    public double getJointAngleAsDegree();

    public void setJointAngleAsDegree(double aDegree);

    public double getMinAngleAsDegree();

    public double getMaxAngleAsDegree();

    public void addListener(JointModelListener aListener);

    /**
     * 対象のリスナーが、このモデルに設定されていれば削除する。
     * 
     * @param aListener
     * @return 削除が成功したらtrue 対象リスナが見つからなければfalse
     */
    public boolean removeListener(JointModelListener aListener);
}
